首先來建立 Controller。
建立 Controller
此處提供一個小技巧,除了建立 Controller 之外,還可以將所有 resource method 一併一起建好,指令為下:
$ php artisan make:controller PostsController --resource
或者
$ php artisan make:controller PostsController -r
建立完成後,Controller 內會包含所有 7 個 resource method
*PostsController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
Resource controller 的所有 method、HTTP verb、URI 為以下表格 ( 以 post 為例 ):
method | HTTP verb | URI |
---|
index|GET|/posts
show|GET|/posts/{id}
create|GET|/posts/create
store|POST|/posts
edit|GET|/posts/{id}/edit
update|PUT/PATCH|/posts/{id}
destroy|DELETE|/posts/{id}
然而,並非所有的 method 都是我們想要的,在 RESTful API 中,不會存在 create 和 edit method,因為這兩者僅僅只跟前端表格的呈現有關,而開發 API 是屬於純後端的情形,所以自己可以手動將這兩個 method 刪掉。除此之外,當然可以手動新增自己的 method,在此部份我們會手動新增 userPosts method,而其所需代入的參數根據前一篇的 api routes,為 $user_id。
post 的所有 API 為以下情形:
*PostsController.php ( 為了簡潔,先把註解去掉 )
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostsController extends Controller
{
public function index()
{
//
}
public function store(Request $request)
{
//
}
public function show($id)
{
//
}
public function update(Request $request, $id)
{
//
}
public function destroy($id)
{
//
}
public function userPosts($user_id)
{
//
}
}
建立完 Controller 之後,由於我們沒有任何的 posts,因此接下來就來實作 store method。
參考資料: